<html>
<head>
  <title>Evernote Export</title>
  <basefont face="微软雅黑" size="2" />
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <meta name="exporter-version" content="YXBJ Windows/602498 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;"/>
  <style>
    body, td {
      font-family: 微软雅黑;
      font-size: 10pt;
    }
  </style>
</head>
<body>
<a name="531"/>

<div>
<span><div><div><div><span style="font-weight: bold; font-size: 14pt;">EL和JSTL核心技术</span></div><div><span style="font-weight: bold;">EL表达式：</span></div><div><span style="font-weight: bold;">概念：提供了在jsp中简化表达式的方法，可以更加方便的访问各种数据并输出</span></div><div><span style="font-weight: bold;">主要功能：</span></div><ol><li><div>依次访问pageContext、request、session和application作用域（从小到大）对象存储的数据。</div></li><li><div>获取请求参数值。</div></li><li><div>访问Bean对象的属性。</div></li><li><div>访问集合中的数据。</div></li><li><div>输出简单的运算结果。</div></li></ol><div><br/></div><div><span style="font-weight: bold;">访问内置对象的数据</span></div><div><span style="font-weight: bold;">访问方式：1. &lt;</span> <span style="font-weight: bold;">%=request.getAttribute(“ varName”)%</span> <span style="font-weight: bold;">&gt; 2. 用EL实现：${varName}</span></div><div><span style="font-weight: bold;">在EL之前访问请求参数的数据的方式：</span></div></div><ol><li><div><span style="font-weight: bold;">request.getParameter(name);</span></div></li><li><div><span style="font-weight: bold;">request.getParameterValues(name);</span></div></li></ol><div><span style="font-weight: bold;">在EL中访问请求参数的数据的方式：</span></div><ol><li><div><span style="font-weight: bold;">param：接收的参数只有一个值。</span></div></li><li><div><span style="font-weight: bold;">paramValues：接受的参数有多个值。</span></div></li></ol><div><span style="font-weight: bold;">访问Bean对象的属性</span></div><div><span style="font-weight: bold;">访问方式：</span></div><ol><li><div><span style="font-weight: bold;">$ { 对象名 . 属性名 }，例如：${user.name}</span></div></li><li><div><span style="font-weight: bold;">$ { 对象名 [“属性名”] }，例如：${user[&quot;name&quot;]}</span></div></li></ol><div><span style="font-weight: bold;">常用的内置对象：</span></div><div><br/></div><div><span style="font-weight: bold;">               类别                                          标识符                                                    描述</span></div><ol><li><div><span style="font-weight: bold;"> </span>   JSP                                      pageContext                            PageContext 处理当前页面</div></li><li><div>   作用域                                    pageScope                      同页面作用域属性名称和值有关的Map类</div></li><li><div>                                                requestScope                   同请求作用域属性的名称和值有关的Map类</div></li><li><div>                                                 sessionScope                   同会话作用域属性的名称和值有关的Map类</div></li><li><div>                                              applicationScope                同应用程序作用域属性的名称和值有关的Map类</div></li><li><div>  请求参数                                       param                         根据名称存储请求参数的值的Map类</div></li><li><div>                                                 paramValues                    把请求参数的所有值作为一个String数组来存储的Map类</div></li><li><div>     请求头                                       header                         根据名称存储请求头主要值的Map类</div></li><li><div>                                                  headerValues                  把请求头的所有值作为一个String数组来存储的Map类</div></li><li><div>Cookie                                           cookie                         根据名称存储请求附带的cookie的Map类</div></li><li><div>初始化参数                                   initParam                      根据名称存储Web应用程序上下文初始化参数的Map类</div></li></ol><div><br/></div><div><span style="font-weight: bold;">常用</span><span style="font-weight: bold; color: rgb(255, 0, 0);">算数</span><span style="font-weight: bold;">运算符：</span></div><div><br/></div><div><br/></div><div>                    <span style="font-weight: bold;">算术运算符                   说明                 范例                                     运算结果</span></div><ol><li><div>                +                            加                  ${1+2}                                        3</div></li><li><div>                －                            减                    ${2-1}                                       1</div></li><li><div>                *                           乘                         ${2*3}                                6</div></li><li><div>           / 或 div                        除                ${16/5}或${16div5}                        3.2</div></li><li><div>          % 或 mod                    取余            ${16%5}或${16mod5}                       1</div></li></ol><div><br/></div><div><span style="font-weight: bold;">常用的</span><span style="font-weight: bold; color: rgb(255, 0, 0);">关系</span><span style="font-weight: bold;">运算符</span></div><div><br/></div><div><span style="font-weight: bold;">                       关系运算符                   说明                        范例                            运算结果</span></div><div><br/></div><ol><li><div><span style="font-weight: bold;">     </span>          ==或eq                    等于               ${1==2}或${1 eq 2}              false</div></li><li><div>                != 或ne                  不等于              ${2!=1}或${1 ne 2}               true</div></li><li><div>                 &lt; 或lt                      小于                 ${2&lt;3}或${2 lt 3 }               true</div></li><li><div>                &gt; 或 gt                     大于               ${16&gt;5}或${16 gt 5}             true</div></li><li><div>               &lt;= 或 le                小于等于            ${16&lt;=5}或${16 le 5}           false</div></li><li><div>               &gt;= 或 ge               大于等于           ${16&gt;=5}或${16 ge 5}            true</div></li></ol><div><br/></div><div><span style="font-weight: bold;">常用的</span><span style="font-weight: bold; color: rgb(255, 0, 0);">逻辑</span><span style="font-weight: bold;">运算符</span></div><div><br/></div><div><span style="font-weight: bold;">                      逻辑运算符              说明                               范例                                               运算结果</span></div><ol><li><div>           &amp;&amp; 或 and           与运算           ${true&amp;&amp;true}或${true and true}                     true</div></li><li><div>              || 或or                或运算              ${true||false}或${true or false}                       tru</div></li><li><div>             ! 或not               非运算                       ${!true}或${not true }                             false</div></li></ol><div><br/></div><div><span style="color: rgb(255, 0, 0);">条件</span>运算符： ${条件表达式? 语句1 : 语句2}             三目运算符</div><div><span style="color: rgb(255, 0, 0);">验证</span>运算符： ${empty 表达式}                     返回布尔值判断表达式是否为&quot;空&quot;值，null值、无元素的集合或数组、长度为零的String被认为是空值。</div><div><br/></div><div><br/></div><div><br/></div><div><font style="font-size: 14pt;"><br/></font></div><div><span style="font-weight: bold; font-size: 14pt;">JSTL标签</span></div><div><span style="font-weight: bold; font-size: 10pt;">概念：</span></div><ol><li><div>JSTL( JSP Standard Tag Library ) 被称为JSP标准标签库。</div></li><li><div>可以利用这些标签取代JSP页面上的Java代码，从而提高程序的可读性，降低程序的维护难度。</div></li></ol><div><span style="font-weight: bold;">使用方式：</span> <span style="font-weight: bold;">在JSP页面中使用taglib指定引入jstl标签库，方式为：</span>&lt;!--  prefix属性用于指定库前缀  --&gt;</div><div>                                                                                                   &lt;!-- uri属性用于指定库的标识 --&gt;</div><div>                                                                                                   &lt;%@ taglib prefix=&quot;c&quot; uri=&quot;<a href="http://java.sun.com/jsp/jstl/core">http://java.sun.com/jsp/jstl/core</a>&quot;  %&gt;</div><div><br/></div><div><span style="font-weight: bold;">常用核心标签：</span></div><ol><li><div><span style="font-weight: bold;">输出标签：&lt;c:out&gt;&lt;/c:out&gt;    </span> <span style="font-weight: bold;">用来将指定内容输出的标签</span></div></li><li><div><span style="font-weight: bold;">设置标签： &lt;c:set&gt;&lt;/c:set&gt;      </span><span style="font-weight: bold;">用来设置属性范围值的标签</span></div></li><li><div><span style="font-weight: bold;">删除标签：&lt;c:remove&gt;&lt;/c:remove&gt;    </span> <span style="font-weight: bold;">用来删除指定数据的标签</span></div></li><li><div><span style="font-weight: bold;">单条件判断标签：&lt;</span> <span style="font-weight: bold;">c:if test =“EL条件表达式”</span><span style="font-weight: bold;">&gt;</span></div></li></ol><div><span style="font-weight: bold;">                                                  满足条件执行</span></div><div><span style="font-weight: bold;">                                      &lt;c:if&gt;</span></div><ol start="5"><li><div><span style="font-weight: bold;">多条件判断标签： &lt;</span> <span style="font-weight: bold;">c:choose</span> <span style="font-weight: bold;">&gt;</span></div></li></ol><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                                               &lt;</span> <span style="font-weight: bold;">c:when test =“EL表达式”</span><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">&gt;</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                                                            满足条件执行</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                                               &lt;</span> <span style="font-weight: bold;">/c:when</span> <span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">&gt;</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                                                    。。。</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                                               &lt;</span> <span style="font-weight: bold;">c:otherwise</span> <span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">&gt;</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                                                    </span> <span style="font-weight: bold;">不满足上述when条件时执行</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                                               &lt;</span> <span style="font-weight: bold;">/c:otherwise</span> <span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">&gt;</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                                       &lt;</span> <span style="font-weight: bold;">/c:choose</span> <span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">&gt;</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">循环标签：&lt;</span> <span style="font-weight: bold;">c:forEach var=“循环变量” items=“集合”</span><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">&gt;</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                    </span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                  &lt;</span> <span style="font-weight: bold;">/c:forEach</span> <span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">&gt;</span></div><div><br/></div><div><span style="font-weight: bold;">常用函数标签：&lt;%@</span> <span style="font-weight: bold;">taglib prefix=&quot;fn&quot; uri=&quot;</span><a href="http://java.sun.com/jsp/jstl/functions" style="font-weight: bold;">http://java.sun.com/jsp/jstl/functions</a><span style="font-weight: bold;">&quot;</span> <span style="font-weight: bold;">%&gt;</span></div><div><span style="font-weight: bold;">常用格式化标签：&lt;%@</span> <span style="font-weight: bold;">taglib prefix=&quot;fmt&quot; uri=&quot;</span><a href="http://java.sun.com/jsp/jstl/fmt" style="font-weight: bold;">http://java.sun.com/jsp/jstl/fmt</a><span style="font-weight: bold;">&quot;</span> <span style="font-weight: bold;">%&gt;</span></div><div><span style="font-weight: bold;">自定义标签：倘若</span> <span style="font-weight: bold;">如果上面几个标签不能满足需求，程序员也可以自定义标签，步骤如下：</span></div><div><span style="font-weight: bold;">                     </span><span style="font-weight: bold;">编写标签类继承SimpleTagSupport类或TagSupport类并重写doTag方法或doStartTag方法。</span></div><div><br/></div><div><br/></div><div><span style="font-weight: bold; font-size: 14pt;">Filter+Listener核心技术</span></div><div><font style="font-size: 10pt;"><br/></font></div><div><span style="font-weight: bold; font-size: 14pt;">Filter过滤器（重点）</span></div><div><span style="font-weight: bold;">概念：</span></div><ol><li><div>Filter本意为”过滤“的含义，是JavaWeb的三大组件之一，三大组件为：Servlet、Filter、 Listener。</div></li><li><div>过滤器是向 Web 应用程序的请求和响应处理添加功能的 Web 服务组件。</div></li><li><div>过滤器相当于浏览器与Web资源之间的一道过滤网，在访问资源之前通过一系列的过滤器对请求 进行修改、判断以及拦截等，也可以对响应进行修改、判断以及拦截等。</div></li></ol><div><br/></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">工作方式： 浏览器 放松请求给过滤器，过滤器经过身份认证，资源审核，资源加密访问等操作发送请求个Web资源然后Web资源在响应给过滤器，过滤器经过一系列操作后在相应给浏览器</span></div><div><br/></div><div><span style="font-weight: bold;">使用方式：</span></div><ol><li><div><span style="font-weight: bold;">自定义类实现Filter接口并重写doFilter方法（</span><span style="font-weight: bold; color: rgb(255, 0, 0);">在方法体内部 必须调用</span> <span style="font-weight: bold; color: rgb(255, 0, 0);">chain.doFilter(request,response);</span> <span style="font-weight: bold;">）</span></div></li><li><div><span style="font-weight: bold;">在web.xml文件中配置过滤器：与servlet类似</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">Filter接口：</span></div><div><span style="font-weight: bold;">概念：</span> <span style="font-weight: bold;">javax.servlet.Filter接口主要用于描述过滤器对象，可以对资源的请求和资源的响应操作进行筛选 操作。</span></div><div><span style="font-weight: bold;">常用方法：</span></div><ol><li><div><span style="font-weight: bold;">void init(FilterConfig filterConfig)                              实现过滤器的初始化操作</span></div></li><li><div><span style="font-weight: bold;">void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)                执行过滤操作的功能</span></div></li><li><div><span style="font-weight: bold;">void destroy()                                                               实现过滤器的销毁操作</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">FilterConfig接口</span></div><div><span style="font-weight: bold;">该奶奶：</span> <span style="font-weight: bold;">javax.servlet.FilterConfig接口主要用于描述过滤器的配置信息。</span></div><div><span style="font-weight: bold;">常用方法：</span></div><ol><li><div><span style="font-weight: bold;">String getFilterName()                                                  获取过滤器的名字</span></div></li><li><div><span style="font-weight: bold;">String getInitParameter(String name)                         获取指定的初始化参数信息</span></div></li><li><div><span style="font-weight: bold;">Enumeration getInitParameterNames()                      获取所有的初始化操作名称</span></div></li><li><div><span style="font-weight: bold;">ServletContext getServletContext()                             获取ServletContext对象</span></div></li></ol><div><span style="font-weight: bold;">多个过滤器的使用：</span> <span style="font-weight: bold;">如果有多个过滤器都满足过滤的条件，则容器依据映射的先后顺序来调用各个过滤器。（在浏览器发送响应给服务器时，若中间有多个过滤，就按顺序来进行过滤，服务器响应浏览器时，就反顺序来，这些多个过滤器组成过滤器链）</span></div><div><br/></div><div><span style="font-weight: bold;">过滤器优点</span></div><ol><li><div><span style="font-weight: bold;">实现代码的“可插拔性”，即增加或减少某个功能模块，不会影响程序的正常执行。</span></div></li><li><div><span style="font-weight: bold;">可以将多个相同处理逻辑的模块集中写在过滤器里面，可实现重复利用、也方便代码的维护。</span></div></li></ol><div><br/></div><div><br/></div><div><span style="font-weight: bold; font-size: 14pt;">Listener监听器（重点）</span></div><div><span style="font-weight: bold;">概念：</span></div><ol><li><div><span style="font-weight: bold;">Servlet规范中定义的一种特殊的组件，用来监听Servlet容器产生的事件并进行相应的处理。</span></div></li><li><div><span style="font-weight: bold;">容器产生的事件分类如下：</span></div></li><ol><ol><li><div><span style="font-weight: bold;">生命周期相关的事件。</span></div></li><li><div><span style="font-weight: bold;">属性状态相关的事件。</span></div></li><li><div><span style="font-weight: bold;">存值状态相关的事件。</span></div></li></ol></ol><li><div><span style="font-weight: bold;">底层原理是采用接口回调的方式实现</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">基本分类：</span></div><div><span style="font-weight: bold;">                                                         监听器类型                                                               功能介绍</span></div><ol><li><div><span style="font-weight: bold;">                       javax.servlet.ServletRequestListener                           监听request作用域的创建和销毁</span></div></li><li><div><span style="font-weight: bold;">                 javax.servlet.ServletRequestAttributeListener                  监听request作用域的属性状态变化</span></div></li><li><div><span style="font-weight: bold;">                     javax.servlet.http.HttpSessionListener                           监听session作用域的创建和销毁</span></div></li><li><div><span style="font-weight: bold;">                javax.servlet.http.HttpSessionAttributeListener                 监听session作用域的属性状态变化</span></div></li><li><div><span style="font-weight: bold;">                         javax.servlet.ServletContextListener                          监听application作用域的创建和销毁</span></div></li><li><div><span style="font-weight: bold;">                   javax.servlet.ServletContextAttributeListener                 监听application作用域的属性状态变化</span></div></li><li><div><span style="font-weight: bold;">                   javax.servlet.http.HttpSessionBindingListener                监听对象与session的绑定和解除</span></div></li><li><div><span style="font-weight: bold;">                 javax.servlet.http.HttpSessionActivationListener             监听session数值的钝化和活化</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">ServletRequestListener监听器：</span> <span style="font-weight: bold;">在ServletRequest创建和关闭时都会通知ServletRequestListener监听器。</span></div><div><span style="font-weight: bold;">常用方法：</span></div><ol><li><div><span style="font-weight: bold;">void requestInitialized(ServletRequestEvent sre)                             实现ServletRequest对象的初始化</span></div></li><li><div><span style="font-weight: bold;">void requestDestroyed(ServletRequestEvent sre)                            实现ServletRequest对象的销毁</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">ServletRequestAttributeListener监听器：</span> <span style="font-weight: bold;">向ServletRequest添加、删除或者替换一个属性的时候，将会通知 ServletRequestAttributeListener监听器。</span></div><div><br/></div><div><span style="font-weight: bold;">常用方法如下：</span></div><ol><li><div><span style="font-weight: bold;">void attributeAdded(ServletRequestAttributeEvent srae)                          增加属性时触发</span></div></li><li><div><span style="font-weight: bold;">void attributeReplaced(ServletRequestAttributeEvent srae)                     修改属性时触发</span></div></li><li><div><span style="font-weight: bold;">void attributeRemoved(ServletRequestAttributeEvent srae)                      删除属性时触发</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">HttpSessionListener监听器：</span> <span style="font-weight: bold;">当一个HttpSession刚被创建或者失效（invalidate）的时候，将会通知HttpSessionListener监听 器。</span></div><div><span style="font-weight: bold;">方法：</span></div><div><span style="font-weight: bold;">               1.</span> <span style="font-weight: bold;">void sessionCreated(HttpSessionEvent se)                        当一个HttpSession对象被创建时会调用这个方法</span></div><div><span style="font-weight: bold;">               2.</span> <span style="font-weight: bold;">void sessionDestroyed(HttpSessionEvent se)                   当一个HttpSession超时或者调用HttpSession的 invalidate()方法让它销毁时，将会调用这个方法</span></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">HttpSessionAttributeListener监听器：</span> <span style="font-weight: bold;">HttpSession中添加、删除或者替换一个属性的时候，将会通知HttpSessionAttributeListener监 听器。</span></div><div><span style="font-weight: bold;">方法：</span></div><ol><li><div><span style="font-weight: bold;">void attributeAdded(HttpSessionBindingEvent se)                         当往会话中加入一个属性的时候会调用这个 方法</span></div></li><li><div><span style="font-weight: bold;">void attributeRemoved(HttpSessionBindingEvent se)                     当从会话中删除一个属性的时候会调用这个 方法</span></div></li><li><div><span style="font-weight: bold;">void attributeReplaced(HttpSessionBindingEvent se)                     当改变会话中的属性的时候会调用这个方法</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">ServletContextListener监听器：</span> <span style="font-weight: bold;">在ServletContext创建和关闭时都会通知ServletContextListener监听器。</span></div><div><span style="font-weight: bold;">方法：</span></div><ol><li><div><span style="font-weight: bold;">void contextInitialized(ServletContextEvent sce) 当ServletContext创建的时候，将会调用这个方法</span></div></li><li><div><span style="font-weight: bold;">void contextDestroyed(ServletContextEvent sce) 当ServletContext销毁的时候（例如关闭应用服务器 或者重新加载应用），将会调用这个方法</span></div></li></ol><div><span style="font-weight: bold;">ServletContextAttributeListener监听器：</span> <span style="font-weight: bold;">向ServletContext添加、删除或者替换一个属性的时候，将会通知 ServletContextAttributesListener监听器</span></div><div><span style="font-weight: bold;">方法：</span></div><ol><li><div><span style="font-weight: bold;">void attributeAdded(ServletContextAttributeEvent scae) 往ServletContext中加入一个属性的时 候触发</span></div></li><li><div><span style="font-weight: bold;">void attributeRemoved(ServletContextAttributeEvent scae) 从ServletContext中删除一个属性的时 候触发</span></div></li><li><div><span style="font-weight: bold;">void attributeReplaced(ServletContextA</span></div></li><li><div><br/></div></li><li><div><span style="font-weight: bold;">ttributeEvent scae) 改变ServletContext中属性的时候触发</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">HttpSessionBindingListener监听器：</span> <span style="font-weight: bold;">HttpSession中绑定和解除绑定时，将会通知HttpSessionListener监听器。</span></div><div><span style="font-weight: bold;">方法：</span></div><ol><li><div><span style="font-weight: bold;">void valueBound(HttpSessionBindingEvent event) 有对象绑定时调用该方法</span></div></li><li><div><span style="font-weight: bold;">void valueUnbound(HttpSessionBindingEvent event) 有对象解除绑定时调用该方法</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">HttpSessionActivationListener监听器：</span> <span style="font-weight: bold;">当有session数值的钝化和活化操作时，将会通知HttpSessionActivationListener监听器。</span></div><div><span style="font-weight: bold;">方法：</span></div><ol><li><div><span style="font-weight: bold;">void sessionWillPassivate(HttpSessionEvent se) 有钝化操作时调用该方法</span></div></li><li><div><span style="font-weight: bold;">void sessionDidActivate(HttpSessionEvent se) 有活化操作时调用该方法</span></div></li><li><div><span style="font-weight: bold;">配置context.xml文件的方式如下：</span></div></li></ol><div><span style="font-weight: bold;">                                                       </span> <span style="font-weight: bold; color: rgb(255, 0, 0);">&lt;</span> <span style="color: rgb(255, 0, 0); font-weight: bold;">Manager className=&quot;org.apache.catalina.session.PersistentManager&quot; saveOnRestart=&quot;true&quot;</span> <span style="color: rgb(255, 0, 0); font-weight: bold;">&gt;</span></div><div><span style="color: rgb(255, 0, 0); font-weight: bold;">                                                                &lt;!</span> <span style="color: rgb(255, 0, 0); font-weight: bold;">-- 配置文件存放的路径信息，可以自由指定 --</span> <span style="color: rgb(255, 0, 0); font-weight: bold;">&gt;</span></div><div><span style="color: rgb(255, 0, 0); font-weight: bold;">                                                            &lt;</span> <span style="color: rgb(255, 0, 0); font-weight: bold;">Store className=&quot;org.apache.catalina.session.FileStore&quot; directory=&quot;C:\session&quot;/</span> <span style="color: rgb(255, 0, 0); font-weight: bold;">&gt;</span></div><div><span style="color: rgb(255, 0, 0); font-weight: bold;">                                                               &lt;</span> <span style="color: rgb(255, 0, 0); font-weight: bold;">/Manager</span> <span style="font-weight: bold; color: rgb(255, 0, 0);">&gt;     </span></div><div><br/></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">注意：这些监听器方法都需要在web.xml文件中配置监听器</span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">&lt;listener&gt;</span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">            &lt;listener-class&gt;xxxx.xxx.xxx.xxx.xxx&lt;/listener-class&gt;</span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">&lt;/listener&gt;</span></div><div><br/></div><div><br/></div><div><font style="font-size: 14pt;"><br/></font></div><div><span style="font-weight: bold; font-size: 14pt;">Linux系统概述和编程基础</span></div><div><span style="font-weight: bold; font-size: 10pt;">Linux系统概述（常识）</span></div><div><span style="font-weight: bold;">Linux系统的概述</span></div><ol><li><div><span style="font-weight: bold;">Linux系统诞生于1991年  </span> <span style="font-weight: bold;">林纳斯·托瓦兹       </span></div></li><li><div><span style="font-weight: bold;">是一套免费、自由、开发源代码的类Unix操作系统，</span> <span style="font-weight: bold;">是一个基于Posix(Portable Operating System Interface)标准和多用户、多任务、支持多线程的操作系统。</span></div></li><li><div><span style="font-weight: bold;">Linux能运行主要的Unix工具软件、应用程序和网络协议，支持32位和64位硬件。</span></div></li></ol><div><span style="font-weight: bold;">反省版本：</span></div><ol><li><div><span style="font-weight: bold;">CentOS：是RHEL的克隆版本，可以认为是免费版本的Redhat系统。</span></div></li><li><div><span style="font-weight: bold;">Ubuntu：目前最好的Linux桌面版，拥有很人性化的亮丽的交互界面，强大的软件源支持。</span></div></li></ol><div><br/></div><div><br/></div><div><font style="font-size: 10pt;"><span style="font-size: 10pt; font-weight: bold;">Linux</span><span style="font-size: 10pt; font-weight: bold;">目录结构</span></font></div><ol><li><div><span style="font-weight: bold;">/bin                         binarie:存放二进制可执行文件 (例如tomcat的bin目录)</span></div></li><li><div><span style="font-weight: bold;">/sbin                       super binaries:存放二进制文件,只有root用户才能访问</span></div></li><li><div><span style="font-weight: bold;">/boot                      系统启动核心目录,存放系统启动程序文件，例:查看启动文件的大小</span></div></li><li><div><span style="font-weight: bold;">/dev                         devices:用于存放硬件设备文件</span></div></li><li><div><span style="font-weight: bold;">/etc                           etcetera:存放系统配置文件(字体文件等)</span></div></li><li><div><span style="font-weight: bold;">/home                      家目录,每一个用户都有一个”家”，用户的起始目录,创建用户跟随创建相应的家目录</span></div></li><li><div><span style="font-weight: bold;">/lib                           library:系统资源文件类库</span></div></li><li><div><span style="font-weight: bold;">/proc                        内存映射目录,可以查看系统相关硬件的信息</span></div></li><li><div><span style="font-weight: bold;">/var                           variable:可变的,变量. 部署项目用的</span></div></li><li><div><span style="font-weight: bold;">/tmp                          temporary:用来存放临时文件</span></div></li><li><div><span style="font-weight: bold;">/root                          超级用户root的家目录</span></div></li><li><div><span style="font-weight: bold;">/usr                           unix shared resouce: 存放unix共享系统资源，类似于” C:/ Program Files”,用于安装 各种软件</span></div></li></ol><div><font style="font-size: 10pt;"><br/></font></div><div><font style="font-size: 10pt;"><br/></font></div><div><br/></div><div><span style="font-weight: bold;">Shell的概念</span></div><ol><li><div><span style="font-weight: bold;">Shell俗称外壳，是提供用户使用界面的一种软件，叫做命令解释器。</span></div></li><li><div><span style="font-weight: bold;">主要负责接受用户输入的命令，然后调用相应的应用程序，最后向用户输出程序运行的结果。</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">命令的格式</span></div><ol><li><div><span style="font-weight: bold;">命令 [-选项] [参数]</span></div></li><li><div><span style="font-weight: bold;">命令区分大小写，其中选项和参数是可选的，中间采用空格隔开</span></div></li></ol><div><br/></div><div><br/></div><div><span style="font-weight: bold;">查看目录下文件/目录</span></div><ol><li><div><span style="font-weight: bold;">ls                                          list显示文件</span></div></li><li><div><span style="font-weight: bold;">ls -l 或 ll list -list                 显示详细信息</span></div></li><li><div><span style="font-weight: bold;">ls -a list -all                         显示全部(包含隐藏文件)文件</span></div></li><li><div><span style="font-weight: bold;">ls -al list -all                       list上两个合体</span></div></li><li><div><span style="font-weight: bold;">ls                                         目录名    查看目录下有什么东西</span></div></li></ol><div><br/></div><div><br/></div><div><span style="font-weight: bold;">目录切换</span></div><ol><li><div><span style="font-weight: bold;">cd ..                      上一级目录</span></div></li><li><div><span style="font-weight: bold;">cd                         dirname 进入目录</span></div></li><li><div><span style="font-weight: bold;">cd 或 cd ~            直接回到用户的家目录</span></div></li><li><div><span style="font-weight: bold;">cd /                      回到系统根目录</span></div></li></ol><div><br/></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">查看完整路径：</span> <span style="font-weight: bold;">pwd        查看当前目录所在的位置</span></div><div><br/></div><div><span style="font-weight: bold;">查看当前用户：</span> <span style="font-weight: bold;">whoami          查看当前用户的名称</span></div><div><br/></div><div><span style="font-weight: bold;">用户切换</span></div><ol><li><div><span style="font-weight: bold;">su                   普通用户切换到root用户</span></div></li><li><div><span style="font-weight: bold;">su root            切换到root用户</span></div></li><li><div><span style="font-weight: bold;">su                    用户名 切换到普通用户</span></div></li><li><div><span style="font-weight: bold;">exit                 退回到原来用户</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">管理用户</span></div><ol><li><div><span style="font-weight: bold;">useradd xxx               创建用户</span></div></li><li><div><span style="font-weight: bold;">passwd  xxx               为创建的用户设置密码</span></div></li><li><div><span style="font-weight: bold;">userdel                       删除用户</span></div></li></ol><div><br/></div><div><br/></div><div><span style="font-weight: bold;">查看命令的所在目录：</span> <span style="font-weight: bold;">which 命令                 查看指定命令所在的路径信息</span></div><div><br/></div><div><span style="font-weight: bold;">文件操作</span></div><ol><li><div><span style="font-weight: bold;">touch fileName                    创建名字为fileName的文件</span></div></li><li><div><span style="font-weight: bold;">touch dir/fileName                在dir目录下创建名字为fileName的文件</span></div></li><li><div><span style="font-weight: bold;">echo 内容 &gt; fileName             把内容覆盖写到文件中，若文件不存在则创建</span></div></li><li><div><span style="font-weight: bold;">echo 内容 &gt;&gt; fileName          把内容追加到文件中</span></div></li><li><div><span style="font-weight: bold;">cat fileName                          打印文件内容到终端</span></div></li><li><div><span style="font-weight: bold;">more fileName                      分屏查看文件各行内容，不支持回看</span></div></li><li><div><span style="font-weight: bold;">less fileName                         查看文件各部分内容，支持回看</span></div></li><li><div><span style="font-weight: bold;">head -n fileName                   查看文件的前n行内容</span></div></li><li><div><span style="font-weight: bold;">tail -n fileName                      查看文件末尾n行内容</span></div></li><li><div><span style="font-weight: bold;">wc fileName                           查看文件的行数</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">目录操作</span></div><ol><li><div><span style="font-weight: bold;">mkdir                                      目录名 创建普通文件夹</span></div></li><li><div><span style="font-weight: bold;">mkdir -p                                  目录/目录/目录 递归方式创建多级父子文件夹</span></div></li><li><div><span style="font-weight: bold;">mv dir1 dir2                           将dir1移动到dir2中</span></div></li><li><div><span style="font-weight: bold;">mv dir1/dir2 ./                        将dir1中dir2移动到当前目录下</span></div></li><li><div><span style="font-weight: bold;">mv dir1 name                     将dir1改名为name</span></div></li><li><div><span style="font-weight: bold;">cp dir1 name                        将dir1拷贝为name</span></div></li><li><div><span style="font-weight: bold;">cp -r dir1 dir2                        需要设置参数 -r (recursive递归) 无视目录层次</span></div></li><li><div><span style="font-weight: bold;">rm 文件                                  删除文件</span></div></li><li><div><span style="font-weight: bold;">rm -r 目录                                 递归删除目录(无视目录层次)</span></div></li><li><div><span style="font-weight: bold;">rm -rf 文件/目录                     -r force(强制) 删除文件/目录</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">查找操作</span></div><ol><li><div><span style="font-weight: bold;">find / -name passwd[完整名称]                    查找passwd文件</span></div></li><li><div><span style="font-weight: bold;">find ./ -name “p*”                                     查找带”p”的文件</span></div></li><li><div><span style="font-weight: bold;">find ./ -type f                                                     查找所有文件</span></div></li><li><div><span style="font-weight: bold;">grep 内容 fileName                                    从指定文件中查找指定的内容</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">权限管理:</span> <span style="font-weight: bold;">chmod 权限 文件/目录名                         管理指定文件的权限信息，r读:4 w写:2 x执行:1</span></div><div><br/></div><div><span style="font-weight: bold;">进程管理:</span></div><ol><li><div><span style="font-weight: bold;">ps                                    查看当前终端窗口里的进程</span></div></li><li><div><span style="font-weight: bold;">ps -aux                              查看系统中的所有进程</span></div></li><li><div><span style="font-weight: bold;">ps -ef                               查看进程列表</span></div></li><li><div><span style="font-weight: bold;">kill 进程号                          杀死指定的进程</span></div></li><li><div><span style="font-weight: bold;">kill -9 进程号                     强制杀死指定的进程</span></div></li></ol><div><br/></div><div><br/></div><div><span style="font-weight: bold;">其它命令</span></div><ol><li><div><span style="font-weight: bold;">ifconfig                                                              查看当前系统的IP地址等信息</span></div></li><li><div><span style="font-weight: bold;">tar zcvf 压缩文件名.tar.gz 路径1 路径2 ...           实现一组文件或文件夹的打包</span></div></li><li><div><span style="font-weight: bold;">tar zxvf 压缩文件名.tar.gz                                  实现解压缩解包</span></div></li><li><div><span style="font-weight: bold;">man [章节号] 命令/函数名                                   查询指定的命令或函数</span></div></li></ol><div><br/></div><div><br/></div><div><br/></div><div><span style="font-weight: bold; font-size: 12pt;">vi工具的使用（重点）</span></div><div><span style="font-weight: bold; font-size: 10pt;">该奶奶：</span> <span style="font-weight: bold;">vi和vim是Linux系统命令行下的文本编辑器，通常格式为：vi 文件名 或 vim 文件名。</span></div><div><br/></div><div><span style="font-weight: bold;">三种模式：命令模式             编辑模式            底行模式</span></div><div><br/></div><div><span style="font-weight: bold;">命令模式的编辑命令</span></div><ol><li><div><span style="font-weight: bold;">i：在当前位置之前插入</span></div></li><li><div><span style="font-weight: bold;">a：在当前位置之后插入</span></div></li><li><div><span style="font-weight: bold;">o：在当前行下插入</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">命令行模式的删除命令</span></div><ol><li><div><span style="font-weight: bold;">x                          删除一个字符</span></div></li><li><div><span style="font-weight: bold;">dw                       删除当前词</span></div></li><li><div><span style="font-weight: bold;">3dw                     删除三个词</span></div></li><li><div><span style="font-weight: bold;">dd                        删除当前行</span></div></li><li><div><span style="font-weight: bold;">5dd                      删除五行</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">命令行模式的修改命令</span></div><ol><li><div><span style="font-weight: bold;">r                       替换一个字符</span></div></li><li><div><span style="font-weight: bold;">cw                   替换一个单词</span></div></li><li><div><span style="font-weight: bold;">cc                    替换一行</span></div></li><li><div><span style="font-weight: bold;">C                      替换从光标至行尾</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">命令行模式的拷贝命令</span></div><ol><li><div><span style="font-weight: bold;">yw                    拷贝词</span></div></li><li><div><span style="font-weight: bold;">yy                     拷贝行(或Y)</span></div></li><li><div><span style="font-weight: bold;">dd                    剪切行</span></div></li><li><div><span style="font-weight: bold;">p                       当前行下粘贴</span></div></li><li><div><span style="font-weight: bold;">u                       撤销</span></div></li><li><div><span style="font-weight: bold;">ctrl+r                取消撤销</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">底行模式的命令</span></div><ol><li><div><span style="font-weight: bold;">:w                                                                      存盘</span></div></li><li><div><span style="font-weight: bold;">:w newfile                                                        存成新文件</span></div></li><li><div><span style="font-weight: bold;">:wq                                                                   存盘退出Vi(或ZZ，或:x)</span></div></li><li><div><span style="font-weight: bold;">:q!                                                                     强行退出不存盘</span></div></li><li><div><span style="font-weight: bold;">:1,2co3                                                             拷贝行1，行2在行3之后</span></div></li><li><div><span style="font-weight: bold;">:4,5mo6                                                           移动行4，行5在行6之后</span></div></li><li><div><span style="font-weight: bold;">:%s /源字符串/目标字符串</span></div></li><li><div><span style="font-weight: bold;">:%s /源字符串/目标字符串/g                             替换每一行中的所有</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">注意使用</span></div><ol><li><div><span style="font-weight: bold;">使用vimtutor 命令用来练习vi命令。</span></div></li><li><div><span style="font-weight: bold;">用户主目录下.vimrc文件可以实现vi的简单设置。</span></div></li></ol><div><br/></div><div><br/></div><div><span style="font-weight: bold; font-size: 14pt;">开发环境搭建和Shell编程</span></div><div><font style="font-size: 14pt;"><br/></font></div><div><span style="font-weight: bold;">开发环境搭建（熟练掌握）</span></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">Xshell：</span></div><div><span style="font-weight: bold;">网络连接模式设置为NAT模式</span></div><div><span style="font-weight: bold;">修改配置文件：</span> <span style="font-weight: bold;">使用root用户打开</span><span style="font-weight: bold; color: rgb(255, 0, 0);">/etc/sysconfig/network-scripts/ifcfg-eno16777736</span><span style="font-weight: bold;">文件</span></div><div><span style="font-weight: bold;">添加内容为：</span><span style="font-weight: bold;"> </span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">BOOTPROTO=static </span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">ONBOOT=yes </span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">IPADDR=192.168.xxx.128 </span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">GATEWAY=192.168.xxx.2 </span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">NETMASK=255.255.255.0 </span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">DNS1=114.114.114.114</span></div><div><span style="font-weight: bold;">使用命令使得配置文件生效：</span><span style="font-weight: bold; color: rgb(255, 0, 0);">service network restart</span></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">JDK：</span></div><div><span style="font-weight: bold;">配置环境变量:</span></div><ol><li><div><span style="font-weight: bold;">使用root用户打开配置文件/etc/profile，向文件末尾追加内容如下：</span></div></li><ol><li><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;"> export JAVA_HOME=/usr/javajdk</span></div></li><li><div><span style="font-weight: bold;">export PATH=$JAVA_HOME/bin:$PATH</span></div></li></ol></ol><ol start="2"><li><div><span style="font-weight: bold;">保存退出后让文件生效并验证是否配置成功</span></div></li></ol><div><span style="font-weight: bold;">                    命令：</span></div><div><span style="font-weight: bold; color: unset; font-family: unset; font-size: unset;">                         </span> <b style="font-size: unset;"><span style="font-weight: bold; font-family: unset; font-size: unset; color: rgb(255, 0, 0);">source /etc/profile</span></b></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">                          javac  -v</span></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">Tomcat</span></div><div><span style="font-weight: bold;">启动和关闭方式：</span></div><ol><li><div><span style="font-weight: bold; color: rgb(255, 0, 0);">startup.sh</span></div></li><li><div><span style="font-weight: bold; color: rgb(255, 0, 0);">shutdown.sh</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">开放防火墙端口：</span> <span style="font-weight: bold;">/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT（</span> <span style="font-weight: bold;">开启8080端口（暂时开通）</span> <span style="font-weight: bold;">）</span></div><div><br/></div><div><span style="font-weight: bold;">配置环境变量：</span></div><ol><li><div><span style="font-weight: bold;">使用root用户打开配置文件/etc/profile，向文件末尾追加内容。</span></div></li></ol><div><span style="font-weight: bold;">           内容如下：</span></div><div><span style="font-weight: bold;">                           </span><span style="font-weight: bold;">export CATALINA_HOME=/usr/tomcat </span></div><div><span style="font-weight: bold;">                          </span> <span style="font-weight: bold;">export PATH=$CATALINA_HOME/bin:$PATH</span></div><ol start="2"><li><div><span style="font-weight: bold;">保存退出后让文件生效并验证是否配置成功</span></div></li></ol><div><span style="font-weight: bold;">                             </span> <span style="font-weight: bold; color: rgb(255, 0, 0);">source /etc/profile</span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">                              startup.sh</span></div><div><br/></div><div><span style="font-weight: bold;">发布Web项目：</span> <span style="font-weight: bold;">将Web项目打成war包，通过Xftp工具将war包放在tomcat/webapp目录并启动</span></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">Mysql的下载和安装：</span></div><ol><li><div><span style="font-weight: bold;">下载Mysql的repo源：</span> <span style="font-weight: bold;">wget</span> <a href="http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm" style="font-weight: bold;">http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm</a></div></li><li><div><span style="font-weight: bold;">安装rpm包         </span> <span style="font-weight: bold;">rpm -ivh mysql57-community-release-el7-8.noarch.rpm</span></div></li><li><div><span style="font-weight: bold;">安装Mysql              </span> <span style="font-weight: bold;">yum install mysql-server</span></div></li><li><div><span style="font-weight: bold;">启动服务                  </span> <span style="font-weight: bold;">service mysqld start</span></div></li><li><div><span style="font-weight: bold;">查看服务状态                </span> <span style="font-weight: bold;">systemctl status mysqld</span></div></li><li><div><span style="font-weight: bold;">使用root用户登录                </span> <span style="font-weight: bold;">mysql -u root</span></div></li><li><div><span style="font-weight: bold;">修改临时密码                     </span> <span style="font-weight: bold;">alter user 'root'@'localhost' identified by 'QiDian@666';</span></div></li></ol><div><br/></div><div><span style="font-weight: bold;">图形化界面访问数据库</span></div><ol><li><div><span style="font-weight: bold;">使用SQLyog工具：</span> <span style="font-weight: bold;">启动图形化界面工具SQLyog连接虚拟机中Mysql数据库 如若出现错误号码1130，解决方法如下：</span></div></li></ol><div><span style="font-weight: bold;">        </span></div><div><span style="font-weight: bold;">                                                                                                                        1.</span> <span style="font-weight: bold;">使用root权限登录数据库后选择mysql库</span></div><div><span style="font-weight: bold;">                                                                                                                                                  </span> <span style="font-weight: bold; color: rgb(255, 0, 0);">mysql -u root -p </span></div><div><span style="color: rgb(255, 0, 0); font-weight: bold;">                                                                                                                                                     </span> <span style="color: rgb(255, 0, 0); font-weight: bold;">use mysql;</span></div><div><span style="font-weight: bold;">                                                                                                                        2.</span> <span style="font-weight: bold;">查看mysql库中的user表的host值后修改为通配符%</span></div><div><span style="font-weight: bold;">                                                                                                                        </span><span style="font-weight: bold; color: rgb(255, 0, 0);"> select host from user where user='root'; （查找）</span></div><div><span style="font-weight: bold; color: rgb(255, 0, 0);">                                                                                                                        update user set host='%' where user='root';（修改）</span></div><div><span style="font-weight: bold;">                                                                                                                                    </span></div><div>                                                                                                                       <span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(255, 0, 0); font-weight: bold;">flush privileges; （刷新）</span></div><div><span style="font-weight: bold;">                                                                                                                        3. </span> <span style="font-weight: bold;">查看修改结果并重新测试：</span> <span style="font-weight: bold; color: rgb(255, 0, 0);">select user,host from user;</span></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div></div><div><br/></div></span>
</div></body></html> 